package com.apanal.qlife.sys.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.apanal.qlife.common.page.Page;
import com.apanal.qlife.sys.model.User;

/**
 * 用户数据持久层接口
 * 
 * 
 * @author shuliangxing
 * 
 * @date 2015-9-15下午2:15:17
 */
public interface UserMapper {

	/**
	 * 根据id删除
	 * 
	 * @param useId
	 * @return
	 */
	int deleteByPrimaryKey(Long useId);

	/**
	 * 新增
	 * 
	 * @param record
	 * @return
	 */
	int insert(User record);

	/**
	 * 非空字段新增
	 * 
	 * @param record
	 * @return
	 */
	int insertSelective(User record);

	/**
	 * 根据id查询
	 * 
	 * @param useId
	 * @return
	 */
	User selectByPrimaryKey(Long useId);

	/**
	 * 根据id更新非空字段
	 * 
	 * @param record
	 * @return
	 */
	int updateByPrimaryKeySelective(User record);

	/**
	 * 根据id更新
	 * 
	 * @param record
	 * @return
	 */
	int updateByPrimaryKey(User record);

	/* 分割线 */

	/**
	 * 批量新增用户
	 * 
	 * @param list
	 * @return
	 */
	int inserts(List<User> list);

	/**
	 * 根据条件查询
	 * 
	 * @return
	 */
	List<User> select(User user);

	/**
	 * 根据条件查询用户和相关信息
	 * 
	 * @param record
	 * @return
	 */
	List<User> selectRelation(User record);

	/**
	 * 分页查询用户和相关信息
	 * 
	 * @param entity
	 * @param page
	 * @return
	 */
	List<User> selectRelationForPage(@Param(value = "e") User entity,
			@Param(value = "p") Page page);

	/**
	 * 查询用户总数
	 * 
	 * @param entity
	 * @param page
	 * @return
	 */
	int selectRelationForPageCount(@Param(value = "e") User entity,
			@Param(value = "p") Page page);

	/**
	 * 根据用户id查询用户名称
	 * 
	 * @param id
	 * @return
	 */
	String selectUserNameById(Long id);

	/**
	 * 根据用户id查询用户真实姓名
	 * 
	 * @param id
	 * @return
	 */
	String selectUserRealNameById(Long id);

	/**
	 * 根据群组id查询用户集合
	 * 
	 * @param groId
	 * @return
	 */
	List<User> selectByGroId(Long groId);

	/**
	 * 查询App帐号List
	 * 
	 * @param entity
	 * @param page
	 * @return
	 */
	List<User> selectAppUserList(@Param(value = "e") User entity,
			@Param(value = "p") Page page);

	/**
	 * 查询App帐号条数
	 * 
	 * @param entity
	 * @param page
	 * @return
	 */
	int selectAppUserListCount(@Param(value = "e") User entity);


}